package com.acheli.rideable.model;


import com.acheli.rideable.entites.ComponentEntity;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.world.phys.Vec3;

public interface AbstractComponent {
    void setMass(double mass);

    double getMass();

    void setRevolutionSpeed(double revolutionSpeed);

    double getRevolutionSpeed();

    void tick();

    void bodyTick(ComponentEntity dynamicBody);

    void renderTick(ComponentEntity dynamicBody, PoseStack matrices, float tickDelta);

//    FriendlyByteBuf packetSyncHead(); //客户端提交数据同步
//
//    NbtCompound clientSending(ACHeliPacketType packetType) throws ClassNotFoundException;
//
//    NbtCompound serverReceiveAndSending(MinecraftServer server, NbtCompound serverOriginNbt, Rideable serverRideable, ServerPlayerEntity sender, ServerPlayerEntity executingPlayer, ACHeliPacketType packetType, String componentTypeName) throws ClassNotFoundException;

//    void clientReceive(NbtCompound receivedNbt, boolean fromSelf, ACHeliPacketType packetType, String componentTypeName) throws ClassNotFoundException;

    void setRelativePosition(Vec3 pos);
    Vec3 getRelativePosition();

    Vec3 getPos(double x, double y, double z);

    Vec3 getPos(Vec3 inputPos);

    Vec3 getPos();


}
